# *args,**kwargs
def damu(*args,**kwargs):
    print(args,kwargs)
    print(*args)


damu(1,2,3,4,c=2,f=6)

# 函数装饰器
def log(fun):
    def inner(*args,**kwargs):
        print("--------")
        res = fun(*args,**kwargs)
        print("++++++++")
        return res
    return inner

def test(a,b,c):
    print("test",a,b,c)
    return a+b+c

test = log(test)

test(1,2,c=3)

# 闭包
# 闭包的核心特征:
#     嵌套函数：闭包涉及嵌套函数（内部函数定义在外部函数内部）。
#     返回内部函数：外部函数返回内部函数（或保留其引用），使得内部函数可以在外部函数执行完毕后继续使用。
#     引用外部变量：内部函数引用了外部函数的变量。

# 类
class Student:
    # 类变量(类属性)
    i = 0
    # 构造函数: __init__
    # 实例变量(实例属性): name, age, score
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    # 实例方法
    def display(self):
        print(self.name, self.age, self.score)

    pass
# 实例化 (对类进行调用 本质是对构造函数进行调用)
s = Student("damu",18,100)
s2 = Student("damu2",18,100)
# 实例(对象) 跟字典的结构很像
Student.i = 9
print(s.__dict__)
print(s2.__dict__)

s.display()
